home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / listings / v_13_02 / mcclung / aa.h < prev    next >
C/C++ Source or Header  |  1994-02-20  |  877b  |  37 lines

  1.  
  2. /* Listing 1: Associative Array Header File */
  3.  
  4. #ifndef _AA_INCLUDED
  5. #define _AA_INCLUDED
  6.  
  7. #include <stdio.h>
  8. #include <stdlib.h>
  9. #include <string.h>
  10.  
  11. enum AA_KEYTYPE {STRING_KEY,BINARY_KEY};
  12.  
  13. typedef struct {
  14.   enum AA_KEYTYPE type;
  15.   size_t key_size;
  16.   size_t data_size;
  17.   void **keys;
  18.   void **data;
  19.   size_t current_elements;
  20.   size_t max_elements;
  21.   int (*hash_function)(void *,int,int,enum AA_KEYTYPE);
  22. } AA;
  23.  
  24. #define AA_MAX_KEY_SIZE 1024
  25. #define AA_CURRENT_SIZE(aa) (aa->max_elements)
  26. #define AA_CURRENT_COUNT(aa) (aa->current_elements)
  27. #define AA_ACCESS(aa_id,type,key) \
  28.     (*((type *)aa_addr(aa_id,key)))
  29.  
  30. AA *aa_create (enum AA_KEYTYPE,size_t,
  31.            size_t,size_t,int (*)());
  32. void *aa_addr(AA *,void *) ;
  33. void aa_keys(AA *,void ***,int *);
  34. void aa_delete(AA *,void *);
  35. unsigned char /* BOOLEAN */ aa_defined(AA *,void *);
  36. #endif
  37.